package com.fish.service.passport;

import java.util.List;
import java.util.Map;

import com.fish.order.po.Order;
import com.fish.passport.po.PassCode;
import com.fish.passport.po.PassEvent;
import com.fish.product.po.PerformTarget;
/**
 * 通关系统请求接口
 * @author chenlinjun
 *
 */
public interface MakePassCodeService {
	/**
	 * 通过通关码编号查询到通关点信息.
	 */
	public PassCode getPassCodeByCodeId(String codeId);
	/**
	 * 为订单的每一个履行对象申请码
	 */
	//public void applyCodeForPerform(OrdOrder order);
	
	public PassEvent destroyCode(String codeId);
	
	/**
	 *  为订单对象申请码
	 */
	public List<PassCode> applyCodeForOrder(Order order,Map<Long,List<PerformTarget>> performTargetList);
	
	/**
	 * 为单独的一个码重新申请
	 * @param codeId
	 * @return
	 */
	public String reApplyCode(String codeId);
	/**
	 * 废码处理
	 * 
	 * @param orderId
	 */
	public List<PassEvent> destroyCode(Order order) ;
	/**
	 * 更新内容
	 * @param order
	 */
	public List<PassEvent> updateContent(Order order);
	
	/**
	 * 修改人数
	 * @param order
	 */
	public List<PassEvent> updatePerson(Order order);
	
	/**
	 * 更新订单联系人信息
	 * @param order
	 */
	public List<PassEvent> updateContact(Order order);
	/**
	 * 重发短信
	 * @param order
	 * @return
	 */
	public List<PassEvent> resend(Order order);
	/**
	 * 重发短信
	 * @param codeId
	 * @return
	 */
	public PassEvent resend(String codeId);
	
	/**
	 * 通过时间查询重新申请码记录
	 * @param 
	 * @return
	 */
	public List<PassCode> selectByReapplyTime();
	/**
	 * 查询已经支付了但是没有收到支付消息的订单
	 * @return
	 */
	public List<Object> selectReapplyOrder();
	

	/**
	 * 判断订单或订单子指项是否已经申请成功过码
	 * @param params
	 * @return
	 */
	public boolean hasSuccessCode(String orderId,long codeTotal);
	/**
	 * 订单是否已经做过申请
	 * @param orderId
	 * @return
	 */
	public boolean hasApply(String orderId);
}
